/**  goodsListItem组件中发出的事件总线  的内容 */
export const goodsItemImgLoadMixin = {
    data() {
        return {
            goodsItemImgLoadListener: null
        }
    },
    methods: {
        /**
         *        防抖函数封装
         * funcName:需要进行防抖的函数名
         * delay：防抖执行的时间（默认50毫秒）
         * 返回值：function
         */
        debounce(funcName, delay = 50) {
            let timer = null;
            return function () {
                if (timer) clearTimeout(timer);
                timer = setTimeout(() => {
                    funcName.apply(this);
                }, delay);
            };
        },
    },
    mounted() {
        const refresh = this.debounce(this.$refs.scroll.refresh);
        // 接收图片加载完成事件，执行refresh()方法，重新计算可滚动区域
        this.goodsItemImgLoadListener = () => {
            // this.$refs.scroll.refresh(); // 每张图片被加载完成就执行refresh方法，将会执行多次，需要进行防抖
            refresh(); // 调用上面的函数进行防抖
        };
        this.$bus.$on("goodsItemImgLoad", this.goodsItemImgLoadListener);
    }
}

/**共用的 返回顶部组件 
 * 使用方式：  <back-top @click.native="backTop" v-show="isBacktopShow" />
 * 以及需要在监听滚动的距离时： 设置返回顶部的显示 this.isBacktopShow = -position.y > 1500; （如:home/index.vue）
 */
import backTop from "components/content/backtop/backtop";
export const backTopMixin = {
    data() {
        return {
            isBacktopShow: false,
        }
    },
    components: {
        backTop
    },
    methods: {
        backTop() {
            this.$refs.scroll.scrollTo(0, 0);
        },
    }
}

/**共用的tabControl组件相关 */
export const tabControlMixin = {
    data() {
        return {
            scrollTabContShow: true,
            currentType: "pop"
        }
    },
    methods: {
        itemClick(index) {
            switch (index) {
                case 0:
                    this.currentType = "pop";
                    break;
                case 1:
                    this.currentType = "new";
                    break;
                case 2:
                    this.currentType = "sell";
                    break;
            }
            // 解决两个tabControl的index不一致的问题
            this.$refs.tabcont1.currentIndex = this.$refs.tabcont2.currentIndex = index;
        },
    }
}